package de.g18.llmaa.logic.properties;

import java.awt.Image;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.util.Properties;

import javax.swing.ImageIcon;

/**
 * Der Propeties Loeder ist eine Singleton Klasse, dieses ermöglicht das die
 * Propeties nur einmal instanziiert werden müssen
 * 
 * In diesem Fall werden zwei unterschiedliche Propeties Dateien geladen. Eine
 * für die Gui Beschriftung und eine für die Laufzeit Information wie z.B.
 * Datenbankverbindung usw..
 * 
 * @author Malte Finnern
 * 
 */
public class PropertiesAndIconLoader {

	public static ImageIcon image_Background = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
			"desktop.background"));

	public static ImageIcon icon_App = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
					"app.icon"));
	
	public static ImageIcon icon_InternalFrame = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
					"internalFrame.icon"));
	
	public static ImageIcon icon_ProdukteEinlesen = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
					"internalFrame.xmlLesen.icon"));
	
	public static ImageIcon icon_LizenzUebersicht = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
					"internalFrame.xmlLesen.icon"));
	
	public static ImageIcon icon_ProdukteAnzeigen = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
					"internalFrame.produkt.icon"));
	
	public static ImageIcon icon_ProduktTab = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
					"tab.produkte.icon"));
	
	public static ImageIcon icon_KeyTab = getInstance().loadImage(
			getInstance().getRuntimeProperties().getProperty(
					"tab.key.icon"));
	
	
	
	

	/**
	 * Propeties Object für die Laufzeiten Informationen
	 */
	private static Properties runtimeProperties = null;

	/**
	 * Instanz Objekt welches diese Klasse zu einem Singleton macht.
	 */
	private static PropertiesAndIconLoader instance = null;

	private PropertiesAndIconLoader() {

		// instanziierung der Propeties Objekte
		runtimeProperties = new Properties();

		try {

			// Einlesen der beiden Propetiesdatein
			runtimeProperties.load(new FileInputStream(
					"./cfg/runtime.properties"));

		} catch (FileNotFoundException e) {
			// Fehlerfall sollte eine Datei nicht existieren
			e.printStackTrace();
		} catch (IOException e) {
			// Lese Fehler
			e.printStackTrace();
		}

	}

	/**
	 * Getter Methode für das Singolton Objekt
	 * 
	 * @return Die Instanz der Klasse PropertiesLoader
	 */
	public static PropertiesAndIconLoader getInstance() {
		if (instance == null)
			instance = new PropertiesAndIconLoader();

		return instance;
	}

	/**
	 * Getter Methode für die RuntimePropeties
	 * 
	 * @return die RuntimePropeties
	 */
	public static Properties getRuntimeProperties() {
		if (instance == null)
			getInstance();

		return runtimeProperties;
	}

	private ImageIcon loadImage(String iconName) {
		URL url = PropertiesAndIconLoader.class.getResource(iconName);
		ImageIcon icon;
		if (url != null)
			icon = new ImageIcon(url);
		else {
			System.err.println("warning could not load icon: " + iconName);
			icon = null;
		}
		return icon;
 
	}
	
//	private Image loadImage(String iconName) {
//		// URL url = Button_OfenDoor.class.getResource(iconName);
//		URL url;
//		try {
////			url = new URL("./cfg/" + iconName);
//
//			Image icon;
////			if (url != null)
//				icon = Toolkit.getDefaultToolkit().getImage("./cfg/"+iconName); //new ImageIcon(url);
//System.out.println(iconName);
//				System.out.println(icon.toString());
//			return icon;
//
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		return null;
//	}

}
